import socket

# 创建socket对象
socket_server = socket.socket()

# 绑定ip地址和端口，使用bind方法传入ip地址和端口，使用bind也代表此为服务端
socket_server.bind(('localhost', 8888))

# 监听端口，方法内接收一个连接数量
socket_server.listen(1)

# 等待客户端连接，accept是一个阻塞方法，返回一个二元元组
result: tuple = socket_server.accept()
conn = result[0]        # 客户端和服务端的连接对象
address = result[1]     # 客户端的地址信息
print(f"接收到了客户端的连接信息，客户端的信息是:{address}")

while True:
    # 接收客户端信息，使用连接对象，而非socket_server对象，recv接收一个缓冲区，一般1024，decode解码
    data: str = conn.recv(1024).decode('utf-8')
    print(f"接收到的消息为:{data}")

    # 发送回复消息
    msg = input("请输入要回复的消息:")
    if msg == 'exit':
        break
    conn.send(msg.encode('utf-8'))  # encode编码

# 关闭连接
conn.close()
socket_server.close()
